/*
这个就是物件，也是唯一的物件“泡泡”
用JFrame方式实现
可以看注释理解
 */
package Frames;

import javazoom.jl.decoder.JavaLayerException;
import musics.MusicPlayer;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileNotFoundException;

public class Circle extends JFrame {  //继承JFrame
    public JLabel jl;  //窗口中中间的显示数字的JLable 也是获取单击事件的组件
    public MusicPlayer mp;  //用于播放击打声音的
    public String count;  //物件的序数（排序）
    public int next;
    public Circle(int x,int y,int count,int next){  //构造方法，next本用于Cursor的移动时间，由于类已废除，此参数未被使用 参数依次为：组件x坐标 组件y坐标 组件序数
        this.setSize(90,150); //设置宽度
        this.setTitle("求三连QAQ"); //设置标题
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        double sx = screenSize.getWidth(); //屏幕宽度，用于计算组件在不同显示器上显示的位置
        double sy = screenSize.getHeight(); //屏幕高度，用于计算组件在不同显示器上显示的位置
        int rex = (int) ((x*1.0000/640)*sx); //组件x坐标（已经适配不同分辨率），用于计算组件在不同显示器上显示的位置
        int rey = (int) ((y*1.0000/480)*sy); //组件y坐标（已经适配不同分辨率），用于计算组件在不同显示器上显示的位置
        this.setLocation(rex,rey);
        this.count=String.valueOf(count);
        this.setFocusable(false);
        this.setUndecorated(false); //想要隐藏标题栏的把false改成true即可

        MusicPlayer mp = new MusicPlayer("src/musics/drum-hitnormal.mp3"); //播放打击声音的
        this.mp=mp;

        //this.setOpacity(0.0f);
        //设置字体
        JLabel jl = new JLabel(this.count);
        Font f = new Font("微软雅黑",Font.BOLD,28);
        jl.setForeground(new Color(96, 168, 192));
        jl.setFont(f);
        jl.setHorizontalAlignment(JLabel.CENTER);
        //jl.setIcon(new ImageIcon("c.png"));
        this.jl=jl;

        jl.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) { //鼠标单击事件，用于戳泡泡的
                super.mouseClicked(e);
                Circle.super.setVisible(false);
                try {
                    mp.run();
                } catch (FileNotFoundException ex) {
                    ex.printStackTrace();
                } catch (JavaLayerException ex) {
                    ex.printStackTrace();
                }
            }
        });
        jl.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) { //键盘单击事件，用于戳泡泡的，目前没有效果，不用试的
                super.keyPressed(e);
                Circle.super.setVisible(false);
            }
        });
        this.add(jl);

    }
    public void paint(Graphics g) { //still testing（正在测试，没有用）
        super.paint(g);
        System.out.println("print");
        g.setColor(new Color(45,185,244));
        g.fillOval(this.getX(),this.getY(),this.getWidth(),this.getHeight());
        g.dispose();
    }

    @Override
    public void setVisible(boolean b) {  //显示状态更改时的事件，比如播放声音之类的
         super.setVisible(b);
        Thread t = new Thread(){
            public void run(){
                for(int i = 0;i<255;i++){  //变色+自动点击的循环
                    Color c = new Color(i,85,101);
                    jl.setBackground(c);
                    Circle.super.getContentPane().setBackground(c);
                    try {
                        Thread.sleep(3);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                Circle.super.setVisible(false);
                try {
                   mp.run();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (JavaLayerException e) {
                    e.printStackTrace();
                }
            }
        };
         if(b==true){
             t.start();
         }else{
             t.stop();
         }
    }

}
class myButton extends Label{

}
